The present invention relates to a method for transmitting data at high speed via a network and more particularly, to a method for transmitting large quantities of data over long distances via a network.
Where computers can transmit data between them they enjoy the advantage of sharing data. A plurality of computers may share one or more files therebetween by way of the file server These functions are all implemented through the availability of data transmission between computers or between any one of the configured computers and a file server.
Data is transmitted generally via a network connected to a communication controller included in a computer The communication controller is usually furnished on a single board. In operation, the communication controller receives a data transmission request or a data reception request from a computer and exchanges date with a communication target in units called packets. Each packet, which is the unit of data communication, contains user data and control information including destination and other information. The communication controller is incorporated in the host and is directly connected to an internal bus thereof. The host has a program called the operating system working therein. The operating system includes communication control software that controls the communication controller.
A typical network is what is known as the Fibre Channel As discussed in "Fibre Channel Connection to the Future" (Fibre Channel Association, 1994, pp. 11-19), the Fibre Channel is available for communication between computers as well as between a computer and disk drives. The Fibre Channel is controlled functionally by layers FC0 through FC4 for each function of the fiber channel. Of these layers, FC0 defines the electrical characteristics of physical cables, FC1 stipulates the methods for encoding and decoding data, and FC2 specifies the data format relevant to the Fibre Channel. FC3 and FC4 designate logical communication methods. The Fibre Channel can connect a plurality of devices of different types, the capability being implemented by the layer FC4 converting data in format for use by a plurality of devices on the Fibre Channel. Illustratively, the Fibre Channel may be connected to disk drives as well as network devices. FC3 is the layer that provides common control over data communication. FC0 through FC4 are generally implemented by hardware, specifically on a board comprising a plurality of LSI's. With the Fibre Channel, the above-mentioned communication control software is a program that controls disk drives and networks In operation, the communication control program issues requests to FC4 of the Fibre Channel. Upon receipt of a request from the communication control program, the Fibre Channel converts the data to its own data format in accordance with the FC4 provisions, forwards the data after conversion through the layers FC3, FC2, FC1 and FC0, in that order, and sends to the destination device. Apart from the packets mentioned earlier, the Fibre Channel is capable of transferring data up to 2 KB long each as stipulated by FC2. On the Fibre Channel, any data exceeding the 2 KB length limit is divided into units of 2 KB each when transferred by the layer FC2.
The communication control software may be functionally divided into two major layers a protocol processing program and a device control program The protocol processing program receives data communication requests from a user program. For data transmission the protocol processing program converts user data into packets according to the communication protocol specific to the network. For data reception the protocol processing program extracts the user data from the transmitted packets. The device control program is a program that requests the communication controller to transmit packets. The primary function of the device control program is to control the hardware of the communication controller. In transmitting data the device control program typically executes the following instruction string:
(1) get.sub.-- register (STATUS) PA1 (2) set.sub.-- register (buf.sub.-- addr) PA1 (3) set.sub.-- register (pkt.sub.-- length) PA1 (4) set.sub.-- register (IN, DMA.sub.-- GO) PA1 (1) get.sub.-- register (STATUS) PA1 (2) set.sub.-- register (buf.sub.-- addr) PA1 (3) set.sub.-- register (pkt.sub.-- length) PA1 (4) set.sub.-- register (OUT, DMA.sub.-- GO)
The instruction (1) above reads the status of the communication controller and checks to see if the status is normal The instruction (2) transmits the location of target data in the host to the communication controller. The instruction (3) notifies the communication controller of the length of the packet to be transmitted. The instruction (4) starts the hardware for transmitting the data from the host to the communication controller The processing above allows the communication controller to analyze control information held in the packet and to transmit the target data to the destination of communication. Thereafter, the protocol processing program waits for an acknowledgment (abbreviated to ACK hereunder) to arrive from the destination indicating that the data has been normally transmitted. The above processes (1) through (4) are carried out by writing and reading information to and from control registers in the communication controller. In like manner, the device control program typically executes the following instruction string upon receiving data:
The instruction (1) above reads the status of the communication controller and checks to see if the status is normal The instruction (2) transmits the location of target data in the host to the communication controller. The instruction (3) notifies the communication controller of the length of the packet to be transmitted. The instruction (4) starts the hardware for transmitting the data from the communication controller to the host. Thereafter, the protocol processing program generates an ACK and sends it to the destination of communication indicating that the data has been normally transmitted The processing above allows the communication controller to analyze the control information held in the packet and to transmit the target data to the destination of communication.
What characterizes the above type of communication is that an ACK is transmitted and received to verify the normal transfer of data every time a packet has been transmitted. With commonly implemented networks, the packet size is limited to be 1 to 4 kilobytes. To transmit data exceeding the size of one packet requires dividing the data into a plurality of packets that may be transmitted. In such a case, a plurality of ACK's are to be transmitted and received regarding each set of user data divided into a plurality of packets. After one packet is transmitted, the next packet cannot be transmitted unless and until the ACK for the most recently transmitted packet has been returned. This prohibition of transmission of the next packet is for communication. In data communication, if any packet is not transmitted normally, the same packet must be retransmitted. This requires retaining the most recently transmitted data in the memory on the transmitting side in preparation for possible retransmission. How long the data should remain in the memory is determined upon receipt of an ACK. That is, when the destination of communication has returned an ACK indicating the normal reception of the data, then the packet retained on the transmitting side is discarded.
One disadvantage of the above method of data transmission is that it takes time to transmit data. This is because the next packet cannot be transmitted until the ACK for the current packet is returned. A solution to this problem is described illustratively by Samuel J. Leffer et al., in "The Design and Implementation of the 4.3BSD UNIX Operating System" (Addison-Wesley Publishing Company, Inc., 1989, pp. 368-375). The solution involves transmitting a plurality of packets sequentially. In the above-cited reference, the protocol processing program stipulates that an ACK is to be issued for every n packets (i.e., n times the packet size). Within that unit of data transmission, packets may be transmitted and received sequentially. For example, suppose that the packet size is 1 KB, that an ACK is issued in units of 10 KB, and that 20 KB of user data are to be transmitted In this case, the protocol processing program on the data transmitting side initially receives 10 KB of data from the user program The protocol processing program divides the 10-KB data into 10 packets of 1 KB each. The 10 packets are sent consecutively to the destination Having transmitted the 10 packets, the transmitting side waits for an ACK to be returned by the receiving side. The receiving side puts together the packets of 1 KB each as they are continuously sent in. When the last 1-KB packet has arrived, the receiving side returns an ACK to the transmitting side. Upon receipt of the ACK, the transmitting side verifies that all data has been transmitted normally. If everything is normal, the protocol processing program of the transmitting side will perform the same process on the next 10-KB data. If the 10 packets were not transmitted normally, the same 10 packets are retransmitted. This method offers better data transfer performance than the method described earlier because packets can be transmitted consecutively within, say, the 10-packet range.